{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'/Users/shrilakshmisbonageri/Desktop/UW/DIRECT/PROJECT/BattDeg/examples'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pwd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Replace this with the path to battdeg.py module in your system\n",
    "sys.path.insert(0, '/Users/shrilakshmisbonageri/Desktop/UW/DIRECT/PROJECT/BattDeg/battdeg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import battdeg"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Reading all the files for a CS2 cell and predicting discharge capacity.\n",
    "##### This example considers reading all the files for the cell CS2_34"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The path of the directory hosting the folder containing the datafiles\n",
    "data_dir = '/Users/shrilakshmisbonageri/Desktop/UW/DIRECT/PROJECT/BattDeg/battdeg/data'\n",
    "# The folder name which has datacells of a cell\n",
    "file_name_format = 'CS2_34'\n",
    "# The sheet number in the excel files containing the data.\n",
    "sheet_name = 1\n",
    "# The ignore indices can be used for PL Samples files if required.\n",
    "ignore_file_indices = []\n",
    "df_out = battdeg.file_reader(data_dir, file_name_format, sheet_name, ignore_file_indices)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Current(A)</th>\n",
       "      <th>Voltage(V)</th>\n",
       "      <th>discharge_cycle_ah</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>3.303478</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>3.303478</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0</td>\n",
       "      <td>3.303478</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.0</td>\n",
       "      <td>3.303478</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>3.303478</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Current(A)  Voltage(V)  discharge_cycle_ah\n",
       "0         0.0    3.303478                 0.0\n",
       "1         0.0    3.303478                 0.0\n",
       "2         0.0    3.303478                 0.0\n",
       "3         0.0    3.303478                 0.0\n",
       "4         0.0    3.303478                 0.0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The below dataframe can be used for prediction.\n",
    "df_out.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The function 'model_prediction' in the battdeg module can be used to predict discharge\n",
    "# capacity from the time series data obtained from 'file_reader' function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /Users/shrilakshmisbonageri/miniconda3/envs/keras/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Colocations handled automatically by placer.\n",
      "WARNING:tensorflow:From /Users/shrilakshmisbonageri/miniconda3/envs/keras/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use tf.cast instead.\n"
     ]
    }
   ],
   "source": [
    "yhat = battdeg.model_prediction(df_out)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1a33be9e10>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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dHiARZK7jML22kSThZiANYuaXoMx0pGijUIP0Zw6u/mno3TXPUFnKbV7gtWrV7Nhw4ZOj2udtO9U6Knz+Dy1pbDtVRj9E+ibDoClqoHviio4Z3gA3hgtWaiIPhxuiu78WH/DmkNZlLElZANsyOE52ktz4QlsNhvz589vN39RT7F69WpiYmI488wzPXodzUlseh6aamHGXS1Nq/YfB2DWiETWB1pVUWsODX2GQnmALR3VV0DVUY4kDDT0snqm4EEqKioYPnx4S5rqK6+8kpdeeglw7jS+++67GT9+PLNnz26pH5yXl8e8efOYMGECM2fOZP9+Z5WpxYsXs3TpUmbNmsWvf/3rE0bVixcv5qabbmLWrFkMHjyYNWvWcN111zFy5EgWL17coqe9tN3p6en87ne/Y/z48YwePZr9+/dTUFDA888/z/Llyxk7dixr167l448/ZsqUKYwbN445c+Zw/PjxdvvucDhIT0+nvLy8pW3o0KEcP37crfMsXrz4hFQZMTExLY/bSg1eU1PDhRdeyJgxYxg1ahTvvPPOD87pEzRUwaYXYPiFkPj9RrtPdh1jQL9ITk/pbaI4k7BmUdlrsNkqjMflZC4Q45zM4I8zhU/vc2746UmSRsP5HS/VtM6SCnD//fezcOFCnn76aRYvXswdd9xBWVlZS/rpmpoaxo8fz+OPP87DDz/MQw89xNNPP80NN9zA888/T2ZmJps2beLmm29m1apVgDNn0MqVKwkODua111474fplZWWsWrWKjz76iIsvvpj169ezYsUKJk2axI4dO0hLS2szbfdvf/tbAOLj49m+fTvPPvssf/nLX1ixYgU33ngjMTEx3HPPPS3X2LhxIyLCihUrePTRR3n88cfb/DyCgoK45JJLeP/997n22mvZtGkT6enp9O/fnxkzZrh9npNpLzW4xWIhJSWF//73v4DTIPskW1+F+nKYubSlqaK2ifW5Vq6fmXFiUsNAiMKpLYUaCyXhg8xWYjwuX0qWPdnQy/qfUTCJ9paPzj33XN59911uueUWvvvuu5b2oKCglroJixYt4rLLLqO6upoNGzawYMGCluOacyQBLFiwoCVB3clcfPHFiAijR4+mf//+jB49GoDTTz+dgoICioqK2kzb3cxll10GwIQJE04o8tOaoqIiFi5cyNGjR2lsbCQjo+O1zoULF/Lwww9z7bXX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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting yhat(model prediction) and real discharge capacity\n",
    "# from df_out\n",
    "plt.plot(yhat,label='Predicted values')\n",
    "plt.plot(df_out['discharge_cycle_ah'],label='Experimental values')\n",
    "plt.xlabel('Time steps')\n",
    "plt.ylabel('Discharge Capacity(Ah)')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
